/**
 * 用户表
 */
var mongoose = require('mongoose');
var userStatus = require('../../config/constant').UserStatus;
var pregnancyCalculation = require('../../components/utils/pregnancyCalculation');
var BaseSchema = require('./base_schema');
var util = require('util');

var userSchema = new BaseSchema({
    userId: {type: String},                            // 用户ID
    nick: {type: String},                              // 用户名/昵称
    age: {type: Number},                               // 年龄
    gender: {type: String, default: '女'},            // 性别
    imgUrl: {type: String},                            // 用户图像URL
    pregnantNum: {type: Number},                       // 怀孕次数
    gnantNum: {type: Number},                          // 生产次数
    diseaseClassSingle: {type: String},                // 个人病史大类
    diseaseClassFam: {type: String},                   // 家族病史大类
    prePeriod: {type: Date},                           // 预产期
    role: {type: Number},                              // 用户角色(1:备孕; 2:怀孕; 3:妈妈)
    type: {type: Number, default: 1},                 // 数据类型(0: 假的; 1: 真实的)
    username: {type: String},                          // 用户名
    accountIds: {type: [String]},                      // 绑定的医生账户ID数组(最多三个)
    closedReason: {type: String},                      // 被封停的原因
    closedAt: {type: Date},                            // 封停时间
    status: {type: Number, default: userStatus.VALID} // 用户状态(0: 无效; 1: 有效)
});

//
userSchema.virtual('userRole').get(function () {
    var role;
    if (1 == this.role) {
        // 如果是备孕
        role = '备孕分子';
    } else if (2 == this.role) {
        // 如果是怀孕
        var days = pregnancyCalculation.getPregnantDayNum(new Date(), this.prePeriod);
        role = -1 != days ? util.format('孕%d周%d天', Math.floor(days / 7), days % 7) : '辣妈ing';
    } else if (3 == this.role) {
        // 如果是妈妈
        role = '辣妈ing';
    } else {
        role = '--';
    }
    return role;
});
module.exports = mongoose.model('user', userSchema);
